#ifndef BUTTON_BASE_H
#define BUTTON_BASE_H

#include <QWidget>      // 基本窗口控件
#include <QLabel>       // 标签控件

#include <QIcon>        // 图标类
#include <QImage>       // 处理图片数据类
#include <QString>      // 字符串类

#include <QMouseEvent>  // 鼠标事件类
#include <QEvent>       // Qt 事件基类
#include <QPainter>     // 绘图类
#include <QPen>         // 画笔类
#include <QBrush>       // 画刷类

#include <QColor>       // 颜色类
#include <QFont>        // 字体类
#include <QRect>        // 矩形类

#include <QDebug>       // 调试输出类

#include <QMouseEvent>

#define Mode_No         0   // 无事件
#define Mode_enter      1   // 鼠标进入
#define Mode_leave      2   // 鼠标离开
#define Mode_Press      3   // 鼠标按下
#define Mode_Release    4   // 鼠标释放

class button_base : public QLabel
{
    Q_OBJECT
public:
    explicit button_base(QWidget *parent = nullptr);

public:
    //设定图标
    void Set_Image(QString Image_path);
    
    //文本
    void Set_Text(QString Text);
    
    //更新状态
    void update_start(int Mode);
    
protected:
    //图标
    QImage M_Image;
    //文本
    QString M_Text;
    //按键状态
    int Mode = -1;
    
protected:
    //移动事件
    void mousePressEvent(QMouseEvent *event);

    
signals:
    //按钮被按下时发出信号
    void signals_click();
};

#endif // BUTTON_BASE_H
